package com.zenithmind.exam.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

/**
 * Swagger API文档配置
 * 
 * @author ZenithMind
 * @since 2024-07-01
 */
@Configuration
public class SwaggerConfig {

    @Bean
    public OpenAPI examServiceOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("考试服务API文档")
                        .description("""
                                # 考试服务API文档
                                
                                考试服务提供完整的在线考试解决方案，包括：
                                
                                ## 主要功能模块
                                
                                ### 1. 考试分类管理
                                - 支持多级分类结构
                                - 分类的增删改查操作
                                - 分类状态管理
                                
                                ### 2. 题库管理
                                - 题库的创建和管理
                                - 支持公开和私有题库
                                - 题库统计信息
                                
                                ### 3. 题目管理
                                - 支持多种题型：单选题、多选题、填空题、简答题、判断题
                                - 题目的增删改查操作
                                - 题目难度分级
                                - 题目标签管理
                                - 题目统计分析
                                
                                ### 4. 考试管理
                                - 考试的创建和配置
                                - 考试状态管理（草稿、发布、进行中、结束）
                                - 考试时间控制
                                - 考试权限管理
                                
                                ### 5. 答题系统
                                - 学生在线答题
                                - 自动评分和手动评分
                                - 答题记录管理
                                - 考试结果统计
                                
                                ## 权限说明
                                
                                - **学生(STUDENT)**: 可以参加考试、查看成绩
                                - **教师(TEACHER)**: 可以创建和管理考试、题目、题库
                                - **管理员(ADMIN)**: 拥有所有权限，包括系统管理功能
                                
                                ## 使用流程
                                
                                1. **教师创建题库和题目**
                                2. **教师创建考试并添加题目**
                                3. **教师发布考试**
                                4. **学生参加考试**
                                5. **系统自动评分或教师手动评分**
                                6. **查看考试结果和统计分析**
                                """)
                        .version("1.0.0")
                        .contact(new Contact()
                                .name("ZenithMind Team")
                                .email("support@zenithmind.com")
                                .url("https://zenithmind.com"))
                        .license(new License()
                                .name("MIT License")
                                .url("https://opensource.org/licenses/MIT")))
                .servers(List.of(
                        new Server()
                                .url("http://localhost:8087")
                                .description("开发环境"),
                        new Server()
                                .url("https://api.zenithmind.com")
                                .description("生产环境")));
    }
}
